]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st: Check for ClutterImage when creating shadow pipelines
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 29 Jan 2019 14:22:26 +0000 (12:22 -0200)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 29 Jan 2019 18:38:04 +0000 (16:38 -0200)
_st_create_shadow_pipeline_from_actor creates shadow pipelines
from actors. This function special-cases ClutterTexture as a
small performance improvement, since we can have access to the
CoglTexture easily with it. However, recent commits removed all
usage of ClutterTexture from GNOME Shell, rendering this optimization
useless. Instead, actors now may have a ClutterImage set as
their content, that can be used instead.

Replace the check for ClutterTexture with a check for ClutterImage,
and use the texture of the image when it is available.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/371

src/st/st-private.c

index cd080d611b236932d4311210900b4e6247d985c3..aa1e42462a29961b811dc2a9ff3745f121e7ce38 100644 (file)
@@ -429,6 +429,7 @@ CoglPipeline *
 _st_create_shadow_pipeline_from_actor (StShadow     *shadow_spec,
                                        ClutterActor *actor)
 {
+  ClutterContent *image = NULL;
   CoglPipeline *shadow_pipeline = NULL;
   float width, height;
 
@@ -439,11 +440,12 @@ _st_create_shadow_pipeline_from_actor (StShadow     *shadow_spec,
   if (width == 0 || height == 0)
     return NULL;
 
-  if (CLUTTER_IS_TEXTURE (actor))
+  image = clutter_actor_get_content (actor);
+  if (image && CLUTTER_IS_IMAGE (image))
     {
       CoglTexture *texture;
 
-      texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
+      texture = clutter_image_get_texture (CLUTTER_IMAGE (image));
       if (texture &&
           cogl_texture_get_width (texture) == width &&
           cogl_texture_get_height (texture) == height)